/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.upc.dew.profesoresparticulares.action;

import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import java.util.ArrayList;
import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.validation.SkipValidation;
import org.springframework.beans.factory.annotation.Autowired;
import pe.edu.upc.dew.profesoresparticulares.model.Horario;
import pe.edu.upc.dew.profesoresparticulares.model.Usuario;
import pe.edu.upc.dew.profesoresparticulares.service.LoginService;
import pe.edu.upc.dew.profesoresparticulares.service.impl.HorarioServiceImpl;
import pe.edu.upc.dew.profesoresparticulares.util.Constantes;

/**
 *
 * @author Wilder
 */
@InterceptorRef("defaultStack")
public class LoginAction extends BaseAction {

    Logger log = Logger.getLogger(this.getClass());
    private String usuario;
    private String password;
    @Autowired
    private LoginService service;

    @Action(value = "login", results = {
        @Result(name = SUCCESS, location = "pages/profesores.jsp"),
        @Result(name = INPUT, location = "index.jsp")})
    public String login() {
        log.debug("inicio");
        Usuario user = service.validaUsuario(usuario, password);        

        if (user != null) {
            setSession(Constantes.USUARIO, user);
            setSession(Constantes.MENU, service.getMenu(user.getTipoUsuario()));
            HorarioServiceImpl controladorHorario = new HorarioServiceImpl();
            ArrayList<Horario> objHorarios = new ArrayList<Horario>();
            objHorarios = controladorHorario.getHorarioProfesor(user.getCodUsuario());
            setSession("horariosProfesor", objHorarios);

            return SUCCESS;

        } else {
            return ERROR;
        }

    }

    @SkipValidation
    @Action(value = "Salir", results = {
        @Result(name = SUCCESS, location = "index.jsp"),
        @Result(name = INPUT, location = "index.jsp")})
    public String salir() {
        getSession().removeAttribute(Constantes.USUARIO);
        getSession().invalidate();
        return SUCCESS;
    }

    @RequiredStringValidator(message = "Ingresar password", trim = true)
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsuario() {
        return usuario;
    }

    @RequiredStringValidator(message = "Ingresar usuario", trim = true)
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public void setService(LoginService service) {
        this.service = service;
    }

    public void prepare() throws Exception {
      //  throw new UnsupportedOperationException("Not supported yet.");
    }
}
